package gui.reservation;

import gui.FenetrePrincipale;
import gui.PanelChambre;
import gui.PanelClient;

import java.awt.Color;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.Font;

import javax.swing.JOptionPane;
import javax.swing.JButton;

import model.Client;
import model.LigneReservation;
import model.Reservation;

import Controleur.ControleurReservation;

public class ClientFenetre extends FenetrePrincipale {
	private JPanel contentPane, panelBouton;
	private PanelChambre panelChambre;
	private PanelClient panelClient;
	private JButton btnAjouter,
					btnConfirmer,
					btnAnnuler,
					btnTerminer,
					btnModifier;
	private boolean isSommaire = false;
	
	
	/**
	 * Create the frame.
	 */
	public ClientFenetre(ActionListener ctrl) {
		afficher(ctrl);		
	}

	@Override
	public void afficher(ActionListener ctrl) {
		this.setBounds(500, 300, 533, 492);
		init();
		
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		panelChambre = new PanelChambre(ctrl);
		panelChambre.setLocation(0, 187);
		contentPane.add(panelChambre);
		
		panelBouton = new JPanel();
		panelBouton.setBackground(new Color(244, 247, 252));
		panelBouton.setBounds(0, 401, 517, 44);
		panelBouton.setLayout(null);
		contentPane.add(panelBouton);
		
		btnAjouter = new JButton("Ajouter");
		btnAjouter.addActionListener (ctrl);
		btnAjouter.setActionCommand(String.valueOf(ControleurReservation.FENETRE_CLIENT_AJOUTER));		
		btnAjouter.setFont(new Font("Bookman Old Style", Font.BOLD, 12));
		btnAjouter.setBounds(110, 10, 89, 23);
		btnAjouter.setEnabled(true);
		panelBouton.add(btnAjouter);
		
		btnTerminer = new JButton("Terminer");
		btnTerminer.addActionListener (ctrl);
		btnTerminer.setActionCommand(String.valueOf(ControleurReservation.FENETRE_CLIENT_TERMINER));		
		btnTerminer.setFont(new Font("Bookman Old Style", Font.BOLD, 12));
		btnTerminer.setBounds(211, 10, 109, 23);
		btnTerminer.setEnabled(false);
		panelBouton.add(btnTerminer);
		
		btnAnnuler = new JButton("Annuler");
		btnAnnuler.addActionListener (ctrl);
		btnAnnuler.setActionCommand(String.valueOf(ControleurReservation.FENETRE_CLIENT_ANNULER_RESERVATION));		
		btnAnnuler.setFont(new Font("Bookman Old Style", Font.BOLD, 12));
		btnAnnuler.setBounds(422, 10, 89, 23);
		panelBouton.add(btnAnnuler);
		
		btnConfirmer = new JButton("Confirmer");
		btnConfirmer.addActionListener (ctrl);
		btnConfirmer.setActionCommand(String.valueOf(ControleurReservation.FENETRE_SOMMAIRE_CONFIRMER));	
		btnConfirmer.setFont(new Font("Bookman Old Style", Font.BOLD, 12));
		btnConfirmer.setBounds(200, 10, 109, 23);
		btnConfirmer.setVisible(false);
		panelBouton.add(btnConfirmer);
		
		btnModifier = new JButton("Modifier");
		btnModifier.addActionListener (ctrl);
		btnModifier.setActionCommand(String.valueOf(ControleurReservation.FENETRE_CLIENT_MODIFIER));
		btnModifier.setFont(new Font("Bookman Old Style", Font.BOLD, 12));
		btnModifier.setBounds(321, 9, 97, 25);
		btnModifier.setEnabled(false);
		panelBouton.add(btnModifier);
		
		panelClient = new PanelClient();
		panelClient.setBounds(0, 0, 517, 188);
		contentPane.add(panelClient);
		
		setTitle("Reservation de chambre");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
	}
	
	public void majLigneReservation(Reservation resActuel){
		panelChambre.majLigneReservation(resActuel);
		
		btnTerminer.setEnabled(true);
	}
	
	public Client getInfoClient(){
		return panelClient.getInfoClient();
	}
	
	public LigneReservation getLingeReservation(){
		LigneReservation tempLigne = panelChambre.creerLigneReservation();
		
		return tempLigne;
	}
	
	/**
	 * Met a jour le spinner de nb de chambre
	 */
	public void recalculerChambreDispo(){
		panelChambre.recalculerChambreDispo();
	}
	
	/**
	 * Active le mod de modification
	 * @param ligne la ligne a modifier, null si mode==false
	 */
	public void demarrerModification(LigneReservation ligne){
		if (ligne != null){
			panelChambre.modifLigneRes(ligne);
		}
		if (isSommaire){
			btnConfirmer.setEnabled(false);
		}
	}
	
	public void retourModeCourant(){
		if (isSommaire){
			btnConfirmer.setEnabled(true);
			panelChambre.setConsultationMode(true);
		}
	}
	
	/**
	 * on passe en mode de consultation on peu seulement modifier des lignes de reservation.
	 */
	public void genererSommaire(){
		isSommaire = true;
		panelClient.setConsultationMode(true);
		panelChambre.setConsultationMode(true);
		btnConfirmer.setVisible(true);
		btnTerminer.setVisible(false);
		btnAjouter.setVisible(false);
		
		JOptionPane.showMessageDialog(null, "Veuilliez valider les information avec le client avant de confirmer la reservation", 
				"Information", JOptionPane.INFORMATION_MESSAGE);
	}
}
